<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  
  <script>
    let p = new Promise( (resolve, reject) => {
        resolve('ok')
    });

    // 执行 then 方法
    let result = p.then( value => {
      // console.log(value);

      // 1. 抛出错误
      // throw '出了问题'

      // 2. 返回结果 非 Promise 类型的对象
      // return 521

      // 3. 返回结果是 Promise 对象
      return new Promise((resolve, reject) => { 
        resolve('success')
        // reject('error')
      })
    }, reason => {
      console.log(reason);
    })

    console.log(result);

    result.then(value => {
      console.log(value);
    }, reason => {
      console.log(reason);
    })


    /**
     * 由 then() 指定的 回调函数执行的结果决定.
     * 也就是 由 then()  指定的   回调函数的返回值决定. 看 return.
     * 没有 return 也就是 没有返回值,  没有返回值就是: undefined
     * undefined 是 非 Promise 的任意值,
     * 返回的 新的 Promise 的状态会变更为 resolved, 
     * 指定回调中 value 为 返回的值.
     *    也可以理解成  Promise.resolve(undefined)方法,  快速的得到一个 Promise对象.
    */
  </script>

</body>
</html>